3.4.5 MVC,MVVM,MVP
1.mvc
/ view <
/ \
/ \
controller ------------------------> \mode
Model-View-Controller(模型-视图-控制器):
用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,
在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑.它强制性的使应用程序的输入、处理和输出分开。
最典型的MVC就是JSP +servlet+javabean的模式
View:只管页面的显示和样式展示。
Control:进行页面节点事件的注册和控制,以及页面加载性能的实现(例如方荣的硬盘缓存)。
Model:真正的逻辑处理,例如jslib库中的form、popup、drag等功能组件都属于model模块。
,View是可以直接访问Model的!从而,View里会包含Model信息,不可避免的还要包括一些 业务逻辑。
在MVC模型里,更关注的Model的不变,而同时有多个对Model的不同显示,及View。
所以,在MVC模型里,Model不依赖于View,但是 View是依赖于Model的。
2.mvp
view
/
/
presenter <-------------> model
Model-View-Presenter:是从经典的模式MVC演变而来,
它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负 责显示。
- MVP与MVC有着一个重大的区别:
在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,
而在MVC中View会从直接Model中读取数据而不是通过 Controller。
3.mvvm
view<----------> viewModel <-------- >model
Model-View-ViewModel:和MVC模式一样,主要目的是分离视图(View)和模型(Model);
在概念上是真正将页面与数据逻辑分离的模式,
在开发方式上,它是真正将前台代码开发者(JS+HTML)与后台代码开发者分离的模式(asp,asp.net,php,jsp)。
MVVM是Model-View-ViewModel的简写。即模型-视图-视图模型。
【模型】指的是后端传递的数据。【视图】指的是所看到的页面。
【视图模型】mvvm模式的核心,它是连接view和model的桥梁。
它有两个方向:一是将【模型】转化成【视图】,实现的方式是:数据绑定。 二是将【视图】转化成【模型】,实现的方式是:DOM 事件监听。
- 低耦合。视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的"View"上,
当View变化的时候Model可以不变,当Model变化的时候View也可以不变。
- 低耦合。视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的"View"上,
- 可重用性。你可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑。
- 独立开发。开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计,
使用Expression Blend可以很容易设计界面并生成xaml代码。
- 独立开发。开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计,
- 可测试。界面素来是比较难于测试的,而现在测试可以针对ViewModel来写。